﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace proyectoENS
{
    class DALCursos
    {
        private static proyectoENSEntities db = new proyectoENSEntities();

        public static List<Cursos> getCursos()
        {
            var tmp = (from a in db.Cursos
                       select a).ToList<Cursos>();
            return (List<Cursos>)tmp;
        }
        public static List<vwCursos> getVwCursos()
        {
            var lista = (from c in db.vwCursos
                     select c).ToList<vwCursos>();
            return (List<vwCursos>)lista;
        }
        public static Cursos getCursoById(int idCurso)
        {
            var curso = (from c in db.Cursos
                         where c.idCurso == idCurso
                         select c).FirstOrDefault<Cursos>();
            return curso;
        }
        public static List<vwCursos2> getVwCursos2()
        {
            var lista = (from c in db.vwCursos2
                         select c).ToList<vwCursos2>();
            return (List<vwCursos2>)lista;
        }

        public static void newCurso(Cursos unCurso)
        {
            db.Cursos.AddObject(unCurso);
            db.SaveChanges();
        }
        //public static void asignarAlumnos(int idCurso, List<Alumnos> alumnos)
        //{
        //    foreach (Alumnos item in alumnos)
        //    {
        //        alumnosXcursos ac = new alumnosXcursos();
        //        ac.idAlumno = item.id;
        //        ac.idCurso = idCurso;
        //        db.alumnosXcursos.AddObject(ac);
        //    }
        //    db.SaveChanges();
        //}
        public static List<int> getAños()
        {
            var lista = (from a in db.Cursos
                         select (int)a.año).Distinct().ToList<int>();
            return lista;
        }
        public static List<Cursos> getDivisiones(int año)
        {
            var lista = (from a in db.Cursos
                         where a.año == año
                         select a).ToList<Cursos>();
            return lista;
        }
        public static int getIdCursoByIdAlumno(int idAlumno)
        {
            var id = (from axc in db.alumnosXcursos
                      where axc.idAlumno == idAlumno
                      select axc.idCurso).First();
            return (int)id;
        }
        public static bool agregarAlumnos(List<Alumnos> lista, int idCurso)
        {
            foreach (Alumnos item in lista)
            {
                alumnosXcursos tmp = new alumnosXcursos
                {
                    idAlumno = item.id,
                    idCurso = idCurso
                };
                if (existeAlumnoEnCurso((int)tmp.idAlumno, (int)tmp.idCurso) == false)
                    db.alumnosXcursos.AddObject(tmp);
            }
            if (db.SaveChanges() == lista.Count)
                return true;
            else
                return false;
        }
        public static bool eliminarAlumno(int idAlumno, int idCurso)
        {
            var curso = (from c in db.alumnosXcursos
                     where c.idCurso == idCurso &&
                     c.idAlumno == idAlumno
                     select c).FirstOrDefault<alumnosXcursos>();
            if (curso != null)
                db.alumnosXcursos.DeleteObject(curso);
            if (db.SaveChanges() == 1)
                return true;
            else return false;

        }
        public static bool existeAlumnoEnCurso(int idAlumno, int idCurso)
        {
            var axc = (from c in db.alumnosXcursos
                       where c.idCurso == idCurso &&
                       c.idAlumno == idAlumno
                       select c).FirstOrDefault<alumnosXcursos>();
            if (axc != null)
                return true;
            else
                return false;
        }
        public static void eliminarCurso(int idCurso)
        {
            var tmp = (from a in db.Cursos
                       where a.idCurso == idCurso
                       select a).FirstOrDefault<Cursos>();
            db.DeleteObject(tmp);
            db.SaveChanges();
        }
    }
}
